package constant.milk.aptprice.util;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Calendar;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Color;
import android.util.DisplayMetrics;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.Toast;

public class MilkUtil
{
	/**
	 * 돈을 xx,xxx,xxx 형태로 리턴
	 * @param money
	 * @return
	 */
	public static String getWon(String money) {
		String temp = "";
		try {
			NumberFormat nf = NumberFormat.getNumberInstance();
//			temp =  nf.format(Integer.parseInt(money));
			temp =  nf.format(new BigDecimal(money));
		} catch (Exception e) {
			return money;
		}
		return temp;
	}
	
	/**
	 * 토스트 출력
	 * @param msg 메세지
	 * @param length length
	 */
	public static void showToast(Context context, String msg)
	{
		Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
	}
	
	/**
	 * 검색 리스트 데이터 두개를 비교해서 중복 값을 체크한다.
	 * @param orgList 
	 * @param selectList
	 * @return
	 */
	public static boolean getListOverlapCheck(ArrayList<String> orgList, ArrayList<String> selectList)
	{
		for (int i = 0; i < selectList.size(); i++)
		{
			String selectData = selectList.get(i);
			
			for (int j = 0; j < orgList.size(); j++)
			{
				String orgData = orgList.get(j);
				
				if (selectData.equals(orgData))
				{
					return true;
				}
			}
		}
		
		return false;
	}
	
	
	/**
	 * dip 를 pixel로 변환한다. 모든 스크린에서 사용자에게 동일한 크기로 보여지게 하기 위해서 사용한다.
	 * @param context
	 * @param pixel
	 * @return
	 */
	public static int dipToPixel(Context context, float dip)
	{
		DisplayMetrics metrics = new DisplayMetrics();
		((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(metrics);
		int densityDpi = metrics.densityDpi;
		return (int)(dip * ((float)densityDpi/(float)160));
	}
	
	/**
	 * 키보드를 강제로 내린다.	
	 */
	public static void hideKeyBoard(Context context, EditText editText)
	{
		InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
		if(editText != null)
			imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
	}
	
	/**
	 * 입력 받은 문자열에 컴마가 있으면 제거해서 리턴한다.
	 * @param string
	 * @return
	 */
	public static String getCommaDel(String string)
	{
		string = string.replace(",", "");
		
		return string;
	}
	
	/**
	 * 입력 받은 문자열에 컴마를 3자리 마다 추가해서 리턴한다.
	 * @param name
	 * @return
	 */
	public static String makeStringWithComma(String name)
	{
		String string = name;
		
		if (string == null || string.length() == 0)
		{
			return "";
		}
		
		try
		{
			BigDecimal value = new BigDecimal(string.replace(",", ""));
			
			DecimalFormat format = new DecimalFormat("###,###.###");
			return format.format(value);    
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		
		return string;
	}
	
	/**
	 * 문자 열에 들어간 어퍼스트로피를 쿼리에서 사용 가능하게 '' 로 변경한다.
	 * @param string
	 * @return
	 */
	public static String getApostrophe(String string)
	{
		string = string.replace("'", "''");
		
		return string;
	}
	
	/**
	 * 한글 금액을 반환한다.
	 * @param money
	 * @return
	 */
	public static String makeMoneyHangul(String money)
	{
		String[] han1 = {"","일","이","삼","사","오","육","칠","팔","구"};
		String[] han2 = {"","십","백","천"};
		String[] han3 = {"","만","억","조","경"};

		StringBuffer result = new StringBuffer();
		int len = money.length();
		
		for(int i = len - 1; i >= 0; i--)
		{
			result.append(han1[Integer.parseInt(money.substring(len-i-1, len-i))]);
			
			if(Integer.parseInt(money.substring(len-i-1, len-i)) > 0)
			{
				result.append(han2[i%4]);
			}
			
			if(i % 4 == 0)
			{
				result.append(han3[i/4]);
			}
		}
		
		return result.toString();
	}
}
